Region Epoch
Last edited by longfangsong at 2021-09-26可以简单地理解为 region 的版本号,具体结构如下:
message RegionEpoch {
// Conf change version, auto increment when add or remove peer
uint64 conf_ver = 1;
// Region version, auto increment when split or merge
uint64 version = 2;
}
更新规则如下:
- 配置变更的时候,
conf_ver += 1
。 - Split 的时候,原 region 与新 region 的 version 均等于原 region 的 version + 新 region 个数。
- Merge 的时候,两个 region 的 version 均等于这两个 region 的 version 最大值 + 1。
因此如果两个 Region 拥有的范围有重叠,只需比较两者的 version 即可确认两者之间的历史先后顺序,version 大的更新。